# @Time : 2024-11-14 17:02
# @Author : Fioman 
# @Phone : 13149920693
"""
eap从到的一些公共的工具,比如获取日期字符串啊,获取trx_id,单独的模块实现单独的功能才可以.
"""
from datetime import datetime


def get_time_stamp():
    """
    年月日,时分秒.毫秒
    获取类似这种时间格式的时间2024-06-20 10:46:13.776
    @return:
    """
    return datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]


def get_trx_id():
    """
    20240620104613776 获取类似这种时间日期的字符串形式
    @return:
    """
    return datetime.now().strftime("%Y%m%d%H%M%S%f")[:-3]


def get_now():
    """
    获取时间,格式为2024-08-09 14:13:37
    @return:
    """
    return datetime.now().strftime("%Y-%m-%d %H:%M:%S")


def get_response_to_eap_error(method, trxId=None, result="NG", rtnCode="", rtnMsg="", body=None):
    """
    获取响应内容的字典,包括两部分,一部分是 "response_head",一部分是"response_body"
    @param method: 请求的函数名称
    @param trxId: 交易唯一序号,get_trx_id()获取
    @param result: 回传结果 OK: 成功, NG:失败(不许重送), Retry: 失败(需再重送)
    @param rtnCode: 返回代码,一般为空`
    @param rtnMsg: 返回消息,一般为空
    @param body: response_body的内容
    @return: 
    """
    if trxId is None:
        trxId = get_trx_id()
    responseHead = {
        "function_name": method,
        "trx_id": trxId,
        "result": result,
        "rtn_code": rtnCode,
        "rtn_msg": "CIMMode为Local,不进行处理"
    }
    responseBody = body if body is not None else {}
    response = {
        "response_head": responseHead,
        "response_body": responseBody
    }
    return response


def get_response_to_eap(method, trxId=None, result="OK", rtnCode="", rtnMsg="", body=None):
    """
    获取响应内容的字典,包括两部分,一部分是 "response_head",一部分是"response_body"
    @param method: 请求的函数名称
    @param trxId: 交易唯一序号,get_trx_id()获取
    @param result: 回传结果 OK: 成功, NG:失败(不许重送), Retry: 失败(需再重送)
    @param rtnCode: 返回代码,一般为空`
    @param rtnMsg: 返回消息,一般为空
    @param body: response_body的内容
    @return: 
    """
    if trxId is None:
        trxId = get_trx_id()
    responseHead = {
        "function_name": method,
        "trx_id": trxId,
        "result": result,
        "rtn_code": rtnCode,
        "rtn_msg": rtnMsg
    }
    responseBody = body if body is not None else {}
    response = {
        "response_head": responseHead,
        "response_body": responseBody
    }
    return response
